package com.atguigu.gmall.product.controller;


import com.atguigu.gmall.common.result.Result;
import com.atguigu.gmall.product.service.FileUploadService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

@RestController
@RequestMapping("/admin/product")
public class FileuploadController {


    @Autowired
    FileUploadService fileUploadService;
    /**
     * GET\POST区别
     * 1、GET带的所有参数都在url?后面 成为查询字符串   xx/xxx?a=b&c=d&xxxx
     *    GET无法携带大量数据，以及不能文件上传
     *    url后面带数据
     * 2、POST请求，默认参数都可以在请求体中  xx/xxx?a=b&c=d&xxxx。请求体无限制所以可以传输大量数据
     *    文件上传
     *    url后+请求体都能带数据
     *
     * 各种文件上传如何接受
     * 1、html: <form action="aaa/hello" method="post" enctype="multipart/form-data">
     *         <input type="file"/>
     *         <input type="submit" value="上传"/>
     *     </form>
     *    mvc: MultipartFile file
     * 2、html：    <form action="aaa/hello" method="post" enctype="multipart/form-data">
     *         头像：<input type="file" name="header"/> <br/>
     *         生活照：<input type="file" name="shz"/> <br/>
     *         身份证：<input type="file" name="sfz"/> <br/>
     *         <input type="submit" value="上传"/>
     *     </form>
     *     mvc：
     *     @RequestPart("header") MultipartFile a,
     *     @RequestPart("shz") MultipartFile b,
     *     @RequestPart("sfz") MultipartFile c
     * 3、html： <form action="aaa/hello" method="post" enctype="multipart/form-data">
     *         头像：<input type="file" name="header"/> <br/>
     *         生活照：<input type="file" name="shz" multiple/> <br/>
     *         身份证：<input type="file" name="sfz"/> <br/>
     *         <input type="submit" value="上传"/>
     *     </form>
     *    mvc：
     *    @RequestPart("header") MultipartFile a,
     *    @RequestPart("shz") MultipartFile[] file,
     *    @RequestPart("sfz") MultipartFile c
     * 4、html：    <form action="aaa/hello" method="post" enctype="multipart/form-data">
     *         头像：<input type="file" name="header"/> <br/>
     *         生活照：<input type="file" name="shz" multiple/> <br/>
     *         身份证：<input type="file" name="sfz"/> <br/>
     *         姓名：<input type="text" name="username"/><br/>
     *         年龄：<input type="text" name="age"/><br/>
     *         <input type="submit" value="上传"/>
     *     </form>
     *     mvc：
     *      @RequestPart("header") MultipartFile a,
     *      @RequestPart("shz") MultipartFile[] b,
     *      @RequestPart("sfz") MultipartFile c,
     *      @RequestParam("username") String username,
     *      @RequestParam("age")Integer age
     *
     *
     *
     * MultipartFile代表一个文件
     * @return
     */
    @PostMapping("/fileUpload")
    public Result fileupload(@RequestPart("file") MultipartFile file){

        //1、把文件存到对象存储（Minio）
        String url = fileUploadService.upload(file);
        //2、把文件存好的访问地址返回给前端

        return Result.ok(url);
    }
}
